/**
 * @Author: Joe
 * @Date: 2020/10/15 0015 下午 5:15
 * 1.首先加载父类的静态字段或者静态语句块
 *
 * 2.子类的静态字段或静态语句块
 *
 * 3.父类普通变量以及语句块
 *
 * 4.父类构造方法被加载
 *
 * 5.子类变量或者语句块被加载
 *
 * 6.子类构造方法被加载
 *   5  10  1 6 9  3 2  9  8 7
 */
public class Father {
    /**
     * 5.父类常量 --9
     *  因为子类重写了父类的的方法 test()则为子类的test()
     */
    private int i =test();
    /**
     * 1.父类静态常量 ---5
     */
    private static int j = method();

    /**
     * 3.父类静态方法 ---1
     */
    static{
        System.out.println("(1)");
    }

    /**
     * 7.父类构造方法 最后执行---2
     */
    Father(){
        System.out.println("(2)");
    }

    /**
     * 6.父类普通代码块执行 ---3
     */
    {
        System.out.println("(3)");
    }

    public int test(){
        System.out.println("(4)");
        return 1;
    }
    public static int method(){
        System.out.println("(5)");
        return 1;
    }

}
